// SharpF2.h : Declaration of the CSharpF2

#pragma once
#include "resource.h"       // main symbols

#include "SharpF2ShellExtension_i.h"

// CSharpF2
class ATL_NO_VTABLE CSharpF2 :
	public CComObjectRootEx<CComSingleThreadModel>,
	public CComCoClass<CSharpF2, &CLSID_SharpF2>,
	public IShellExtInit,
    public IContextMenu
{
public:
	CSharpF2()
	{
	}

	// IShellExtInit
    STDMETHOD(Initialize)(LPCITEMIDLIST, LPDATAOBJECT, HKEY);

    // IContextMenu
    STDMETHOD(GetCommandString)(UINT, UINT, UINT*, LPSTR, UINT);
    STDMETHOD(InvokeCommand)(LPCMINVOKECOMMANDINFO);
    STDMETHOD(QueryContextMenu)(HMENU, UINT, UINT, UINT, UINT);

    DECLARE_REGISTRY_RESOURCEID(IDR_SHARPF2)
    DECLARE_NOT_AGGREGATABLE(CSharpF2)
    DECLARE_PROTECT_FINAL_CONSTRUCT()

    BEGIN_COM_MAP(CSharpF2)
        COM_INTERFACE_ENTRY(IShellExtInit)
        COM_INTERFACE_ENTRY(IContextMenu)
    END_COM_MAP()

protected:
	string_list m_lsFiles;
};

OBJECT_ENTRY_AUTO(__uuidof(SharpF2), CSharpF2)
